home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / languages / obrn-a_1.5_lib.lha / oberon-a / source1.lha / source / amiga / AmigaGuide.mod next >
Encoding:
Text File  |  1995-01-26  |  11.5 KB  |  382 lines

  1. (**************************************************************************
  2.  
  3.      $RCSfile: AmigaGuide.mod $
  4.   Description: Interface to amigaguide.library
  5.  
  6.    Created by: fjc (Frank Copeland)
  7.     $Revision: 3.7 $
  8.       $Author: fjc $
  9.         $Date: 1995/01/26 02:39:55 $
  10.  
  11.   Includes Release 40.15
  12.  
  13.   (C) Copyright 1990-1993 Commodore-Amiga, Inc.
  14.       All Rights Reserved
  15.  
  16.   Oberon-A Interface Copyright © 1994-1995, Frank Copeland.
  17.   This file is part of the Oberon-A Interface.
  18.   See Oberon-A.doc for conditions of use and distribution.
  19.  
  20. *************************************************************************)
  21.  
  22. <* STANDARD- *> <* INITIALISE- *> <* MAIN- *>
  23. <*$ CaseChk-  IndexChk- LongVars+ NilChk-  *>
  24. <*$ RangeChk- StackChk- TypeChk-  OvflChk- *>
  25.  
  26. MODULE [2] AmigaGuide;
  27.  
  28. IMPORT
  29.   SYS := SYSTEM, Kernel, e := Exec, u := Utility, d := Dos,
  30.   i := Intuition, s := Sets;
  31.  
  32.  
  33. TYPE
  34.  
  35. (**-- Pointer declarations ---------------------------------------------*)
  36.  
  37.   AmigaGuideMsgPtr * = POINTER TO AmigaGuideMsg;
  38.   ContextTablePtr * = POINTER TO ContextTable;
  39.   NewAmigaGuidePtr * = POINTER TO NewAmigaGuide;
  40.   XRefPtr * = POINTER TO XRef;
  41.   AmigaGuideHostPtr * = POINTER TO AmigaGuideHost;
  42.   OpFindHostPtr * = POINTER TO OpFindHost;
  43.   OpNodeIOPtr * = POINTER TO OpNodeIO;
  44.   OpExpungeNodePtr * = POINTER TO OpExpungeNode;
  45.  
  46.  
  47. (**-- Library definitions ----------------------------------------------*)
  48.  
  49. CONST
  50.  
  51.   apshToolId       * = 11000;
  52.   startupMsgId     * = apshToolId+1;  (* Startup message *)
  53.   loginToolId      * = apshToolId+2;  (* Login a tool SIPC port *)
  54.   logoutToolId     * = apshToolId+3;  (* Logout a tool SIPC port *)
  55.   shutdownMsgId    * = apshToolId+4;  (* Shutdown message *)
  56.   activateToolId   * = apshToolId+5;  (* Activate tool *)
  57.   deactivateToolId * = apshToolId+6;  (* Deactivate tool *)
  58.   activeToolId     * = apshToolId+7;  (* Tool Active *)
  59.   inactiveToolId   * = apshToolId+8;  (* Tool Inactive *)
  60.   toolStatusId     * = apshToolId+9;  (* Status message *)
  61.   toolCmdId        * = apshToolId+10; (* Tool command message *)
  62.   toolCmdReplyId   * = apshToolId+11; (* Reply to tool command *)
  63.   shutdownToolId   * = apshToolId+12; (* Shutdown tool *)
  64.  
  65. (* Attributes accepted by GetAmigaGuideAttr() *)
  66.   agaDummy      * = u.user;
  67.   path          * = agaDummy+1;
  68.   xrefList      * = agaDummy+2;
  69.   activate      * = agaDummy+3;
  70.   context       * = agaDummy+4;
  71.  
  72.   helpGroup     * = agaDummy+5;    (* e.ULONG: Unique identifier *)
  73.  
  74.   agaReserved1  * = agaDummy+6;
  75.   agaReserved2  * = agaDummy+7;
  76.   agaReserved3  * = agaDummy+8;
  77.  
  78.   aRexxPort     * = agaDummy+9;
  79.     (* e.MsgPortPtr: Pointer to the ARexx message port (V40) *)
  80.  
  81.   arexxPortName * = agaDummy+10;
  82.     (* e.LSTRPTR: Used to specify the ARexx port name (V40) (not copied) *)
  83.  
  84. TYPE
  85.  
  86.   AGContext * = POINTER TO RECORD END;
  87.  
  88.   AmigaGuideMsg * = RECORD (e.MessageBase)
  89.     msg     * : e.Message;             (* Embedded Exec message structure *)
  90.     type    * :  e.ULONG;              (* Type of message *)
  91.     data    * :  e.APTR;               (* Pointer to message data *)
  92.     dSize   * :  e.ULONG;              (* Size of message data *)
  93.     dType   * :  e.ULONG;              (* Type of message data *)
  94.     priRet  * :  e.ULONG;              (* Primary return value *)
  95.     secRet  * :  e.ULONG;              (* Secondary return value *)
  96.     system1 * :  e.APTR;
  97.     system2 * :  e.APTR;
  98.   END;
  99.  
  100. (* Allocation description structure *)
  101.  
  102.   ContextTable * = ARRAY MAX(INTEGER) OF e.LSTRPTR;
  103.  
  104.   NewAmigaGuide * = RECORD
  105.     lock       * : d.FileLockPtr; (* Lock on the document directory *)
  106.     name       * : e.LSTRPTR;     (* Name of document file *)
  107.     screen     * : i.ScreenPtr;   (* Screen to place windows within *)
  108.     pubScreen  * : e.LSTRPTR;     (* Public screen name to open on *)
  109.     hostPort   * : e.LSTRPTR;     (* Application's ARexx port name *)
  110.     clientPort * : e.LSTRPTR;     (* Name to assign to the clients ARexx port *)
  111.     baseName   * : e.LSTRPTR;     (* Base name of the application *)
  112.     flags      * : s.SET32;       (* Flags *)
  113.     context    * : ContextTablePtr; (* NULL terminated context table *)
  114.     node       * : e.LSTRPTR;     (* Node to align on first (defaults to Main) *)
  115.     line       * : LONGINT;       (* Line to align on *)
  116.     extens     * : u.TagListPtr;  (* Tag array extension *)
  117.     client     * : e.APTR;        (* Private! MUST be NULL *)
  118.   END;
  119.  
  120. CONST
  121.  
  122. (* public Client flags *)
  123.  
  124.   loadIndex  * = 0;  (* Force load the index at init time *)
  125.   loadAll    * = 1;  (* Force load the entire database at init *)
  126.   cacheNode  * = 2;  (* Cache each node as visited *)
  127.   cacheDB    * = 3;  (* Keep the buffers around until expunge *)
  128.   unique     * = 15; (* Unique ARexx port name *)
  129.   noActivate * = 16; (* Don't activate window *)
  130.  
  131.   sysGads    * = 31;
  132.  
  133. (* Callback function ID's *)
  134.   open  * = 0;
  135.   close * = 1;
  136.  
  137.   notEnoughMemory  * = 100;
  138.   cantOpenDatabase * = 101;
  139.   cantFindNode     * = 102;
  140.   cantOpenNode     * = 103;
  141.   cantOpenWindow   * = 104;
  142.   invalidCommand   * = 105;
  143.   cantComplete     * = 106;
  144.   portClosed       * = 107;
  145.   cantCreatePort   * = 108;
  146.   keywordNotFound  * = 113;
  147.  
  148. TYPE
  149.  
  150. (* Cross reference node *)
  151.   XRef * = RECORD (e.NodeBase)
  152.     node   * : e.Node;                 (* Embedded node *)
  153.     pad    * :  e.UWORD;               (* Padding *)
  154.     df     * :  e.APTR (*DocFilePtr*); (* Document defined in *)
  155.     file   * :  e.LSTRPTR;             (* Name of document file *)
  156.     name   * :  e.LSTRPTR;             (* Name of item *)
  157.     line   * :  LONGINT;               (* Line defined at *)
  158.   END;
  159.  
  160. CONST
  161.  
  162.   XRSize * = SIZE (XRef);
  163.  
  164. (* Types of cross reference nodes *)
  165.   generic  * = 0;
  166.   function * = 1;
  167.   command  * = 2;
  168.   include  * = 3;
  169.   macro    * = 4;
  170.   struct   * = 5;
  171.   field    * = 6;
  172.   typedef  * = 7;
  173.   define   * = 8;
  174.  
  175. TYPE
  176.  
  177. (* Callback handle *)
  178.  
  179.   AmigaGuideHost * = RECORD (u.HookBase)
  180.     dispatcher * : u.Hook;           (* Dispatcher *)
  181.     reserved   * :  e.ULONG;         (* Must be 0 *)
  182.     flags      * :  s.SET32;
  183.     useCnt     * :  e.ULONG;         (* Number of open nodes *)
  184.     systemData   :  e.APTR;          (* Reserved for system use *)
  185.     userData   * :  e.APTR;          (* Anything you want... *)
  186.   END;
  187.  
  188. CONST
  189.  
  190. (* Methods *)
  191.   findNode  * = 1;
  192.   openNode  * = 2;
  193.   closeNode * = 3;
  194.   expunge   * = 10;  (* Expunge DataBase *)
  195.  
  196. TYPE
  197.  
  198.   MethodBase *= RECORD END;
  199.   Method * = RECORD (MethodBase)
  200.     ID * : e.ULONG;
  201.   END;
  202.  
  203. (* hmFindnode *)
  204.   OpFindHost * = RECORD (MethodBase)
  205.     method * : Method;
  206.     attrs -  :  u.TagListPtr; (*  R: Additional attributes *)
  207.     node  -  :  e.LSTRPTR;    (*  R: Name of node *)
  208.     TOC   *  :  e.LSTRPTR;    (*  W: Table of Contents *)
  209.     title *  :  e.LSTRPTR;    (*  W: Title to give to the node *)
  210.     next  *  :  e.LSTRPTR;    (*  W: Next node to browse to *)
  211.     prev  *  :  e.LSTRPTR;    (*  W: Previous node to browse to *)
  212.   END;
  213.  
  214. (* hmOpennode, hmClosenode *)
  215.   OpNodeIO * = RECORD (MethodBase)
  216.     method    * : Method;
  217.     attrs     - : u.TagListPtr;  (*  R: Additional attributes *)
  218.     node      - : e.LSTRPTR;     (*  R: Node name and arguments *)
  219.     fileName  * : e.LSTRPTR;     (*  W: File name buffer *)
  220.     docBuffer * : e.LSTRPTR;     (*  W: Node buffer *)
  221.     buffLen   * : e.ULONG;       (*  W: Size of buffer *)
  222.     flags     * : s.SET32;       (* RW: Control flags *)
  223.   END;
  224.  
  225. CONST
  226.  
  227. (* OpNodeIO.flags *)
  228.   keep      * = 0;      (* Don't flush this node until database is
  229.                          * closed. *)
  230.   reserved1 * = 1;      (* Reserved for system use *)
  231.   reserved2 * = 2;      (* Reserved for system use *)
  232.   ascii     * = 3;      (* Node is straight ASCII *)
  233.   reserved3 * = 4;      (* Reserved for system use *)
  234.   clean     * = 5;      (* Remove the node from the database *)
  235.   done      * = 6;      (* Done with node *)
  236.  
  237. (* OpNodeIO.attrs *)
  238.   htnaDummy      * = u.user;
  239.   htnaScreen     * = htnaDummy+1;  (* i.ScreenPtr: Screen that window resides in *)
  240.   htnaPens       * = htnaDummy+2;  (* Pen array (from DrawInfo) *)
  241.   htnaRectangle  * = htnaDummy+3;  (* Window box *)
  242.  
  243.   htnaHelpGroup  * = htnaDummy+5;  (* e.ULONG: unique identifier *)
  244.  
  245. TYPE
  246.  
  247. (* hmExpunge *)
  248.   OpExpungeNode * = RECORD (MethodBase)
  249.     method * : Method;
  250.     attrs -  : u.TagListPtr;  (*  R: Additional attributes *)
  251.   END;
  252.  
  253. (**-- Library Base variable --------------------------------------------*)
  254.  
  255. CONST
  256.  
  257.   amigaguideName * = "amigaguide.library";
  258.  
  259. VAR
  260.  
  261.   base* : e.LibraryPtr;
  262.  
  263.  
  264. (**-- Library Functions ------------------------------------------------*)
  265.  
  266. (*--- functions in V40 or higher (Release 3.1) ---*)
  267.  
  268. (* Public entries *)
  269.  
  270. PROCEDURE LockAmigaGuideBase* [base,-36]
  271.   ( handle [8] : AGContext )
  272.   : LONGINT;
  273. PROCEDURE UnlockAmigaGuideBase* [base,-42]
  274.   ( key [0] : LONGINT );
  275. PROCEDURE OpenAmigaGuideA* [base,-54]
  276.   ( VAR nag [8] : NewAmigaGuide;
  277.     attrs   [9] : ARRAY OF u.TagItem )
  278.   : AGContext;
  279. PROCEDURE OpenAmigaGuide* [base,-54]
  280.   ( VAR nag [8]  : NewAmigaGuide;
  281.     attrs   [9]..: u.Tag )
  282.   : AGContext;
  283. PROCEDURE OpenAmigaGuideAsyncA* [base,-60]
  284.   ( VAR nag [8] : NewAmigaGuide;
  285.     attrs   [0] : ARRAY OF u.TagItem )
  286.   : AGContext;
  287. PROCEDURE OpenAmigaGuideAsync* [base,-60]
  288.   ( VAR nag [8]  : NewAmigaGuide;
  289.     attrs   [0]..: u.Tag )
  290.   : AGContext;
  291. PROCEDURE CloseAmigaGuide* [base,-66]
  292.   ( cl [8] : AGContext );
  293. PROCEDURE AmigaGuideSignal* [base,-72]
  294.   ( cl [8] : AGContext )
  295.   : e.ULONG;
  296. PROCEDURE GetAmigaGuideMsg* [base,-78]
  297.   ( cl [8] : AGContext )
  298.   : AmigaGuideMsgPtr;
  299. PROCEDURE ReplyAmigaGuideMsg* [base,-84]
  300.   ( amsg [8] : AmigaGuideMsgPtr );
  301. PROCEDURE SetAGContextA* [base,-90]
  302.   ( cl    [8] : AGContext;
  303.     id    [0] : e.ULONG;
  304.     attrs [1] : ARRAY OF u.TagItem )
  305.   : BOOLEAN;
  306. PROCEDURE SetAGContext* [base,-90]
  307.   ( cl    [8] : AGContext;
  308.     id    [0] : e.ULONG;
  309.     attrs [1] ..: u.Tag )
  310.   : BOOLEAN;
  311. PROCEDURE SendAGContextA* [base,-96]
  312.   ( cl    [8] : AGContext;
  313.     attrs [0] : ARRAY OF u.TagItem )
  314.   : BOOLEAN;
  315. PROCEDURE SendAGContext* [base,-96]
  316.   ( cl    [8]  : AGContext;
  317.     attrs [0]..: u.Tag )
  318.   : BOOLEAN;
  319. PROCEDURE SendAmigaGuideCmdA* [base,-102]
  320.   ( cl    [8] : AGContext;
  321.     cmd   [0] : ARRAY OF CHAR;
  322.     attrs [1] : ARRAY OF u.TagItem )
  323.   : BOOLEAN;
  324. PROCEDURE SendAmigaGuideCmd* [base,-102]
  325.   ( cl    [8]  : AGContext;
  326.     cmd   [0]  : ARRAY OF CHAR;
  327.     attrs [1]..: u.Tag )
  328.   : BOOLEAN;
  329. PROCEDURE SetAmigaGuideAttrsA* [base,-108]
  330.   ( cl    [8] : AGContext;
  331.     attrs [9] : ARRAY OF u.TagItem )
  332.   : LONGINT;
  333. PROCEDURE SetAmigaGuideAttrs* [base,-108]
  334.   ( cl    [8]  : AGContext;
  335.     attrs [9]..: u.Tag )
  336.   : LONGINT;
  337. PROCEDURE GetAmigaGuideAttr* [base,-114]
  338.   ( tag         [0] : u.Tag;
  339.     cl          [8] : AGContext;
  340.     VAR storage [9] : e.APTR )
  341.   : LONGINT;
  342. PROCEDURE LoadXRef* [base,-126]
  343.   ( lock [8] : d.FileLockPtr;
  344.     name [9] : ARRAY OF CHAR )
  345.   : LONGINT;
  346. PROCEDURE ExpungeXRef* [base,-132] ();
  347. PROCEDURE AddAmigaGuideHostA* [base,-138]
  348.   ( h     [8] : u.HookBasePtr;
  349.     name  [0] : ARRAY OF CHAR;
  350.     attrs [9] : ARRAY OF u.TagItem )
  351.   : AmigaGuideHostPtr;
  352. PROCEDURE AddAmigaGuideHost* [base,-138]
  353.   ( h     [8]  : u.HookBasePtr;
  354.     name  [0]  : ARRAY OF CHAR;
  355.     attrs [9]..: u.Tag )
  356.   : AmigaGuideHostPtr;
  357. PROCEDURE RemoveAmigaGuideHostA* [base,-144]
  358.   ( hh    [8] : AmigaGuideHostPtr;
  359.     attrs [9] : ARRAY OF u.TagItem )
  360.   : LONGINT;
  361. PROCEDURE RemoveAmigaGuideHost* [base,-144]
  362.   ( hh    [8]  : AmigaGuideHostPtr;
  363.     attrs [9]..: u.Tag )
  364.   : LONGINT;
  365. PROCEDURE GetAmigaGuideString* [base,-210]
  366.   ( id [0] : LONGINT )
  367.   : e.LSTRPTR;
  368.  
  369. (**-- Library Base variable --------------------------------------------*)
  370.  
  371. (**-----------------------------------*)
  372. PROCEDURE* [0] CloseLib (VAR rc : LONGINT);
  373.  
  374. BEGIN (* CloseLib *)
  375.   IF base # NIL THEN e.CloseLibrary (base) END
  376. END CloseLib;
  377.  
  378. BEGIN
  379.   base := e.OpenLibrary (amigaguideName, e.libraryMinimum);
  380.   IF base # NIL THEN Kernel.SetCleanup (CloseLib) END
  381. END AmigaGuide.
  382.